-- Parsec
-- Module 'scanner'

function inventory()
  local len = 0;
  local tinv = {};
  for i,v in ipairs(inv()) do
    if v ~= nil then
      len = len + 1;
      table.insert(tinv, v);
    end
  end
  if len < 2 then
    return "Думаю, я ещё успею налюбоваться собой.";
  else
    local function enum(objs,cnd)
      local founds = {};
      for i,v in ipairs(tinv) do
        if i > 1 and (cnd == nil or cnd(v)) and not v.hidden then
          table.insert(founds, v);
        end
      end
      local cc = 0;
      local len = table.len(founds);
      for i,v in ipairs(founds) do
        cc = cc + 1;
        if cc > 1 and i ~= len then
          objs = objs .. ", ";
        elseif cc > 1 and i == len then
          objs = objs .. " и ";
        end
        objs = objs .. rcall(v.nam,v):replace("|", "");
      end
      if cc > 0 then
        objs = objs .. ".";
        return objs;
      else
        return "";
      end
    end
    local objs = "На мне ";
    local dress = enum(objs, function(v) return v.dress and not v._off; end);
    objs = dress;
    if objs == "" then
      objs = "У меня с собой ";
    else
      objs = objs .. " С собой у меня ";
    end
    objs = enum(objs, function(v) return not v.dress or v._off; end);
    if objs == "" then
      return dress;
    else
      return objs;
    end
  end
end

function has_inventory()
  local len = 0;
  for i,v in ipairs(inv()) do
    if v~= nil then
      len = len + 1;
    end
  end
  return len >= 2;
end